﻿<?xml version="1.0" encoding="utf-8" ?>
<Recipe Name="ConfigureSplashAboutScreens" xmlns="http://schemas.microsoft.com/pag/gax-core"
                               xmlns:xi="http://www.w3.org/2001/XInclude" Bound="false">
  <DocumentationLinks>
    <Link Kind="Documentation" Caption="Branding Overview" Url="ms-help://MS.VSCC.v90/MS.VSIPCC.v90/MS.VSSDK.v90/dv_vsintegration/html/a47b3645-574c-41c7-8a97-d071cd6b1e82.htm" />
    <Link Kind="Documentation" Caption="How to: Brand a VSPackage" Url="ms-help://MS.VSCC.v90/MS.VSIPCC.v90/MS.VSSDK.v90/dv_vsintegration/html/705a41c3-63d6-4c1e-9f82-771be9191579.htm" />
    <Link Kind="Documentation" Caption="How to: Test the Help About and Splash Screens" Url="ms-help://MS.VSCC.v90/MS.VSIPCC.v90/MS.VSSDK.v90/dv_vsintegration/html/2b959fa4-56d3-44f4-8c2d-9ea2e6fb269d.htm" />    
  </DocumentationLinks>
  <xi:include href="../Common/CommonTypeAliases.xml"
				xpointer="xmlns(gax=http://schemas.microsoft.com/pag/gax-core) xpointer(/gax:Types)" />
  <Caption>VS Splash/About Screens</Caption>
  <Description>VS Splash/About Screens</Description>
  <HostData>
    <Icon ID="191" />
    <CommandBar Menu="VSSDKAssistProjectConfigure"/>
  </HostData>
  <Arguments>
    <xi:include href="../Common/CommonArguments.xml"
					  xpointer="xmlns(gax=http://schemas.microsoft.com/pag/gax-core) xpointer(/gax:Arguments/gax:Argument)" />
    <Argument Name="VSPackageProject" Type="EnvDTE.Project, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" Required="true">
      <ValueProvider Type="VSSDKAssist.Assets.ValueProviders.VisualStudio.CurrentlySelectedProjectValueProvider, VSSDKAssist.Assets"
                     Stage="OnBeginRecipe"/>
    </Argument>
    <Argument Name="VSPackageCodeClass" Type="EnvDTE.CodeClass, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" Required="true">
      <ValueProvider Type="VSSDKAssist.Recipes.Common.ValueProviders.VSPackageCodeClassValueProvider, VSSDKAssist" 
                     Stage="OnBeginRecipe"/>
    </Argument>
    <Argument Name="ResxProjectItem" Type="EnvDTE.ProjectItem, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" Required="true">
      <ValueProvider
        Type="VSSDKAssist.Recipes.Common.ValueProviders.VSPackageResxProjectItemValueProvider, VSSDKAssist"
        VSPackageCodeClassArgument="VSPackageCodeClass" />
    </Argument>
    <Argument Name="BitmapDestinationFolder" Type="EnvDTE.ProjectItem, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" Required="true">
      <ValueProvider Type="VSSDKAssist.Recipes.Common.ValueProviders.ResourcesFolderValueProvider, VSSDKAssist"
                     Stage="OnBeginRecipe"/>
    </Argument>
    <Argument Name="GenerateSplash" Type="System.Boolean" Required="true">
      <ValueProvider Type="VSSDKAssist.Recipes.ConfigureSplashAboutScreens.InstalledProductRegistrationAttributeValueProvider, VSSDKAssist"
                     CodeClassArgument="VSPackageCodeClass"
                     AttributeArgument="UseInterface"
                     Stage="OnBeginRecipe"/>
    </Argument>
    <Argument Name="BitmapFileName" Required="true">
      <ValueProvider Type="VSSDKAssist.Recipes.Common.ValueProviders.EmptyIconValueProvider, VSSDKAssist"
               ImageSize="Size32x32"
               Stage="OnBeginRecipe"/>
    </Argument>
    <Argument Name="PackageProductName" Required="true">
      <ValueProvider Type="VSSDKAssist.Recipes.ConfigureSplashAboutScreens.InstalledProductRegistrationAttributeValueProvider, VSSDKAssist"
               ResxProjectItemArgument="ResxProjectItem"
               CodeClassArgument="VSPackageCodeClass"
               AttributeArgument="ProductNameResxValue"
               Stage="OnBeginRecipe"/>
    </Argument>
    <Argument Name="PackageProductDetails" Required="true">
      <ValueProvider Type="VSSDKAssist.Recipes.ConfigureSplashAboutScreens.InstalledProductRegistrationAttributeValueProvider, VSSDKAssist"
               ResxProjectItemArgument="ResxProjectItem"
               CodeClassArgument="VSPackageCodeClass"
               AttributeArgument="ProductDetailsResxValue"
               Stage="OnBeginRecipe"/>      
    </Argument>
    <Argument Name="PackageProductVersion" Required="true">
      <ValueProvider Type="VSSDKAssist.Recipes.ConfigureSplashAboutScreens.InstalledProductRegistrationAttributeValueProvider, VSSDKAssist"
               CodeClassArgument="VSPackageCodeClass"
               AttributeArgument="ProductIdValue"
               Stage="OnBeginRecipe"/>      
    </Argument>
    <Argument Name="ProductNameResourceId" Required="true">
      <ValueProvider Type="VSSDKAssist.Recipes.ConfigureSplashAboutScreens.InstalledProductRegistrationAttributeValueProvider, VSSDKAssist"
                     CodeClassArgument="VSPackageCodeClass"
                     AttributeArgument="ProductName"
                     Stage="OnBeginRecipe"/>
    </Argument>
    <Argument Name="ProductDetailsResourceId" Required="true">
      <ValueProvider Type="VSSDKAssist.Recipes.ConfigureSplashAboutScreens.InstalledProductRegistrationAttributeValueProvider, VSSDKAssist"
                     CodeClassArgument="VSPackageCodeClass"
                     AttributeArgument="ProductDetails"
                     Stage="OnBeginRecipe"/>
    </Argument>
    <Argument Name="ProductVersionResourceId" Required="true">
      <ValueProvider Type="VSSDKAssist.Recipes.ConfigureSplashAboutScreens.InstalledProductRegistrationAttributeValueProvider, VSSDKAssist"
                     CodeClassArgument="VSPackageCodeClass"
                     ResxProjectItemArgument="ResxProjectItem"
                     AttributeArgument="ProductId"
                     Stage="OnBeginRecipe"/>
    </Argument>    
    <Argument Name="BitmapResourceId" Required="true">
      <ValueProvider Type="VSSDKAssist.Recipes.ConfigureSplashAboutScreens.InstalledProductRegistrationAttributeValueProvider, VSSDKAssist"
                     CodeClassArgument="VSPackageCodeClass"
                     AttributeArgument="IconResourceId"
                     Stage="OnBeginRecipe"/>
    </Argument>
    <Argument Name="IVsInstalledProductTT">
      <ValueProvider Type="VSSDKAssist.Recipes.Common.ValueProviders.TTPathValueProvider, VSSDKAssist"
                     Stage="OnBeginRecipe"
                     SubPath="ConfigureSplashAboutScreens"
                     TTFile="IVsInstalledProduct.tt">
      </ValueProvider>
    </Argument>
    <Argument Name="InstalledProductRegistrationAttributeTT">
      <ValueProvider Type="VSSDKAssist.Recipes.Common.ValueProviders.TTPathValueProvider, VSSDKAssist"
                     Stage="OnBeginRecipe"
                     SubPath="Common"
                     TTFile="InstalledProductRegistrationAttribute.tt">
      </ValueProvider>
    </Argument>
  </Arguments>
  <GatheringServiceData>
    <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
      <Pages>
        <Page Type="VSSDKAssist.Recipes.ConfigureSplashAboutScreens.ConfigureSplashAboutScreensCP1, VSSDKAssist"
              Height="250" Width="510">
          <Title>Specify VS about general properties</Title>
          <LinkTitle>VS about general properties</LinkTitle>
        </Page>
        <Page Type="VSSDKAssist.Recipes.ConfigureSplashAboutScreens.ConfigureSplashAboutScreensCP2, VSSDKAssist"
            Height="200" Width="510">
          <Title>Specify VS about UI properties</Title>
          <LinkTitle>VS about UI properties</LinkTitle>
        </Page>
      </Pages>
    </Wizard>
  </GatheringServiceData>
  <Actions CoordinatorServiceType="VSSDKAssist.Recipes.Common.Coordinators.ExecutionProgressCoordinator, VSSDKAssist">

    <!--Unregister package to delete any previous InstalledProductRegistration-->
    <xi:include href="../UnregisterVSPackage/UnregisterVSPackage.xml" xpointer="xmlns(gax=http://schemas.microsoft.com/pag/gax-core) xpointer(gax:Recipe/gax:Actions/gax:Action)" />
    
    <!--Add References-->
    <Action Name="AddReferences"
            Type="VSSDKAssist.Assets.Actions.VisualStudio.VisualStudio.AddProjectReferenceAction, VSSDKAssist.Assets"
            ReferencedAssembly="Microsoft.VisualStudio.Shell.Interop.dll"
            StatusMessage="Adding references"
            WriteMessageToOutputWindow="true">
      <Input Name="ReferringProject" RecipeArgument="VSPackageProject"/>
    </Action>
    <!--Add Bitmap File-->
    <Action Name="AddBitmapFile" Type="VSSDKAssist.Assets.Actions.VisualStudio.AddItemFromFileToProjectItemAction, VSSDKAssist.Assets"
            Open="false"
            StatusMessage="Adding bitmap file"
            WriteMessageToOutputWindow="true">
      <Input Name="SourceFileName" RecipeArgument="BitmapFileName"/>
      <Input Name="InputProjectItem" RecipeArgument="BitmapDestinationFolder"/>
      <Output Name="ProjectItem" />
    </Action>
    <!--Udpdate Resx-->
    <Action Name="AddBitmapToResx"
            Type="VSSDKAssist.Recipes.Common.Actions.AddBitmapEntryToResxAction, VSSDKAssist"
            StatusMessage="Updating resource file"
            WriteMessageToOutputWindow="true">
      <Input Name="ResxProjectItem" RecipeArgument="ResxProjectItem"/>
      <Input Name="BitmapProjectItem" ActionOutput="AddBitmapFile.ProjectItem"/>
      <Input Name="BitmapResourceId" RecipeArgument="BitmapResourceId"/>
    </Action>
    <Action Name="AddProductNameToResx"
            Type="VSSDKAssist.Recipes.Common.Actions.AddTextEntryToResxAction, VSSDKAssist">
      <Input Name="ResxProjectItem" RecipeArgument="ResxProjectItem"/>
      <Input Name="Text" RecipeArgument="PackageProductName"/>
      <Input Name="TextResourceId" RecipeArgument="ProductNameResourceId"/>
    </Action>
    <Action Name="AddProductDetailsToResx"
            Type="VSSDKAssist.Recipes.Common.Actions.AddTextEntryToResxAction, VSSDKAssist">
      <Input Name="ResxProjectItem" RecipeArgument="ResxProjectItem"/>
      <Input Name="Text" RecipeArgument="PackageProductDetails"/>
      <Input Name="TextResourceId" RecipeArgument="ProductDetailsResourceId"/>
    </Action>
    <Action Name="AddProductVersionToResx"
            Type="VSSDKAssist.Recipes.Common.Actions.AddTextEntryToResxAction, VSSDKAssist">
      <Input Name="ResxProjectItem" RecipeArgument="ResxProjectItem"/>
      <Input Name="Text" RecipeArgument="PackageProductVersion"/>
      <Input Name="TextResourceId" RecipeArgument="ProductVersionResourceId"/>
    </Action>    
    <!--Add InstalledProductRegistration attribute-->
    <Action Name="GenerateInstalledProductRegistrationAttribute"
            Type="Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates.TextTemplateAction, Microsoft.Practices.RecipeFramework.VisualStudio.Library"
            StatusMessage="Adding Splash/About screens registration information"
            WriteMessageToOutputWindow="true">
      <Input Name="Template" RecipeArgument="InstalledProductRegistrationAttributeTT"/>
      <Input Name="GenerateSplash" RecipeArgument="GenerateSplash"/>
      <Input Name="ProductName" RecipeArgument="PackageProductName"/>
      <Input Name="ProductNameResourceId" RecipeArgument="ProductNameResourceId"/>
      <Input Name="ProductDetailsResourceId" RecipeArgument="ProductDetailsResourceId"/>
      <Input Name="ProductVersion" RecipeArgument="PackageProductVersion"/>
      <Input Name="BitmapResourceId" RecipeArgument="BitmapResourceId"/>
      <Output Name="Content" />
    </Action>
    <Action Name="AddInstalledProductRegistrationAttribute"
            Type="VSSDKAssist.Recipes.Common.Actions.InsertAttributeToCodeClassAction, VSSDKAssist"
            AttributeName="InstalledProductRegistration">
      <Input Name="CodeClass" RecipeArgument="VSPackageCodeClass"/>
      <Input Name="AttributeValue" ActionOutput="GenerateInstalledProductRegistrationAttribute.Content"/>
    </Action>    
    <!--Generate IVsInstalledProduct implementation-->
    <Action Name="GenerateIVsInstalledProductImplementation"
	      Type="Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates.TextTemplateAction, Microsoft.Practices.RecipeFramework.VisualStudio.Library">
      <Input Name="Template" RecipeArgument="IVsInstalledProductTT"/>
      <Input Name="BitmapResourceId" RecipeArgument="BitmapResourceId"/>
      <Input Name="ProductNameResourceId" RecipeArgument="ProductNameResourceId"/>
      <Input Name="ProductDetailsResourceId" RecipeArgument="ProductDetailsResourceId"/>
      <Input Name="ProductVersionResourceId" RecipeArgument="ProductVersionResourceId"/>
      <Output Name="Content" />
    </Action>
    <Action Name="ConfigureSplashScreenAction"
            Type="VSSDKAssist.Recipes.ConfigureSplashAboutScreens.ConfigureSplashScreenAction, VSSDKAssist"
            InterfaceName="Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct">
      <Input Name="CodeClass" RecipeArgument="VSPackageCodeClass"/>
      <Input Name="GenerateSplash" RecipeArgument="GenerateSplash"/>
      <Input Name="IVsInstalledProductContent" ActionOutput="GenerateIVsInstalledProductImplementation.Content"/>
    </Action>
  </Actions>
</Recipe>